System and method for smart scripting call centers and configuration thereof

ABSTRACT

The invention provides user configurable and reconfigurable scripting, methods of scripting, and systems for scripting for use by call centers, technical support centers, and marketers. Scripts are interactive tools that guide a telemarketer, a sales person, or a technical support technician through a telephone call with a customer. Scripts are characterized by going on to particular subsequent questions as a function of the customer&#39;s answer to a previous question.

CROSS REFERENCE TO RELATED APPLICATIONS

This Application claims priority to and is a Continuation of U.S. patentapplication Ser. No. 10/900,339 filed on Jul. 24, 2004, which is aContinuation of U.S. patent application Ser. No. 09/866,878 filed on May30, 2001, which is a Continuation of PCT Patent Application No.US99/28415 filed on Nov. 30, 1999, which claims the benefit of U.S.Provisional Patent Application No. 60/110,187 filed on Nov. 30, 1998,each of which is hereby incorporated by reference in its entirety.

FIELD OF THE INVENTION

This invention relates to scripting, including methods of scripting,systems for scripting, and user friendly methods, systems, products, andtools for configuring, reconfiguring, customizing, and enhancing thescripts. This invention particularly relates to end-user (call center ormarketing representative) customization and modification of the scriptcontents and/or logic.

BACKGROUND

Scripting is used for call centers, customer support centers andtechnical support centers to empower customer service representativesand telesales and telemarketing professionals. Scripts, as used herein,are interactive tools that guide a user, as a telemarketer, a salesperson, or a technical support technician through a telephone orin-person/point of sale/point of service interaction with a customer.Scripts are characterized by branching from a question to particularsubsequent questions, or to an associated database, as a function of thecustomer's answer to a previous question or an output of an associateddatabase, thereby automatically guiding the user-customer dialog whileenforcing workflow and the business process.

Scripts are used in a variety of different scenarios from sales toservice in the financial, telecommunications, insurance, and retailingindustries, among others. Scripts can be used to gather information,disseminate information, create new customers, take orders, etc. Thirdparty outsourced vendors rely heavily on scripts to guide users througha variety of different work flows on different products. Vendors usescripts as a way to ensure that product will be sold and servicesprovided in the manner their customers desire; that is, a manufacturermay contract out its “Help Desk” or “Telemarketing” functions to avendor, and will therefore find it desirable to provide scripts toenable the vendor to respond to service requests or sales opportunities.

A clear need exists for scripts that interact with underlying associateddatabases, e.g., inputting data to the databases, extracting data fromthe databases, and branching in response to both user and/or customerinputs and to data inputs and/or outputs to or from the databases.

Scripts generally require a certain amount of customization andconfiguration, for example, to the user's business or business process,and to changes in the metadata and metastructure of any underlying orassociated databases. Heretofore, script customization, configuration,and reconfiguration has required a substantial amount of code rewritingand revision, or a substantial amount of software overhead to support avery limited amount of mainly cosmetic customization features.

A clear need exists for a script method and system that facilitatesend-user customization, configuration, and reconfiguration with aminimum amount of software overhead and code rewriting.

SUMMARY OF THE INVENTION

According to our invention there is provided a system, and method wherethe underlying software structure is readily configurable andreconfigurable by the user, and utilizes reusable objects (includingroutines, subroutines, and functions) having data, public functions andvariables accessible to the end users, private functions and variablesnot generally accessible to end users, and where the product, system,and method can be configured, reconfigured, modified and/or personalizedthrough derived classes or functions that call the public functions ofthese objects, reusing them and inheriting their properties as in objectoriented programming and/or through function and subroutine calls andpassing variables as in convention programming.

The invention disclosed herein provides a system for facilitatinginteraction between a customer and a service provider. The system isconfigurable and with a set of reusable components, as either reusableobjects, data, public functions, and private functions, or routines,subroutines, and functions with global variables and local variables.The public functions, routines, and subroutines, which are callable byan end user, can be accessed through derived classes of objects orcalls. The system also includes a script and an associated database.

The script has a hierarchical set of structured pages, with at least oneof the pages having a structured set of questions. At least one of thequestions has responses that causes the system to either i) link to anassociated database, or ii) link to another question in the script. Thelink may be a query, or the output of the database serving as a link toanother question in the script. Where link is input to our output of thedatabase, the data is data related to the interaction.

When the link is a link to another question in the script, the link maybe to a question in the same page or a link to another question inanother page in the script.

In a further exemplification of the invention, there is provided asystem, which may include one or more computers, with computer programcode, running on one or more computers, for facilitating interactionbetween a customer and a service provider. The code is made up ofreusable elements such as the objects, functions, and variables ofobject oriented programming, or the functions, routines, subroutines,global variables, and local variables, and calls of conventionalprogramming paradigms. The computer program code includes a script andan associated database, and causes the system to a) present a questionto a user, b) receive a response from the user, and c) branch to link toeither i) the associated database, or ii) to another question, both inresponse to the user's response to the question.

The computer program code can cause a query of the associated database,and, as a result of the query, cause the database to output a link toanother question in the script, or to cause the database to output datarelated to the interaction. Alternatively, the computer program codecause a link to another question which is in another page in the script.

In the case of object oriented programming language, the computerprogram code contains base objects containing data, public functions,and private functions, and the computer program code is configured toutilize additional classes of objects inheriting properties of said baseobjects. However, in the case of such programming languages as FORTRAN,BASIC, and the like, the program code contains, functions, routines, andsubroutines, and calls, which use global variables to call thefunctions, routines, and subroutines.

A further aspect of our invention is a method of configuring softwareadapted for facilitating interaction between a customer and a serviceprovider utilizing a script and an associated database. The method ofthe invention utilizes reusable components, such as calling a set ofreusable objects, data, public functions, and private functions, wherethe public functions are accessed through derived classes of objects, inobject oriented programming, and calling functions, routines, andsubroutines in conventional programming.

The script is a set of hierarchically structured pages, with at leastone of the pages having a structured set of questions, where at leastone of the questions has responses, and at least one of the responsescauses the system to either i) link to an associated database, or ii)link to another question in the script. The method involves the stepsof: (a). presenting a question to a user, (b). receiving a response fromthe user, and (c). branch in response to the user's response to thequestion to link to either i) the associated database, or ii) anotherquestion.

The method may include querying the database through the link to theassociated database, the output of the database may be a link to anotherquestion in the script, or data related to the interaction, or a link toanother page in the script.

The method of the invention includes creating either derived objects andcalling a set of reusable base objects, data, public functions, andprivate functions, or calls using functions, routines, and subroutines.

A script is assembled from a set of modular elements. The modularelements are, in increasing order of granularity, the script, one ormore pages within the script, one or more questions per page, a set ofanswers for each question, branching logic from the answer set, and anassociated database or databases which input and/or output data inresponse to questions and/or answers thereto. A script may have aplurality of pages, each such page having a plurality of questionsdisplayed in one view. Each question, in turn, has an answer set, withthe answers having branches to other modules, for example, other pagesor questions. The scripts of our invention are characterized bybranching within and between scripts, pages, and questions. Thebranching may be driven by a customer's answer to a question, eitheralone or in combination with contents of the underlying database ordatabases.

Modular elements, which are ordered and directed sets of questions,answers, answer-driven branches, and answer driven database accesses,serve to control and guide the employee-customer interaction. This isdone by enforcing business processes during the interaction. Thequestions are logically related questions within the business process.Enforcing business processes through branching and database accessesenables users, as well as call center agents, to interact with customersin a useful and productive manner. With respect to the business process,including control of the business process, and branching, each pagepreferably has a plurality of questions, with each question beingcapable of having one or more answers. The modular elements containobjects which may be called by other objects (as functions andvariables), that is by calling public functions of a called object.Additionally, the objects permit end-user configuration to control thelogical flow of questions, responses, and links.

The method and the system of our invention both provide for verifyingone or more of the absence of unreachable pages, unreachable questions,and missing answer branches, and the presence of pages called by thescript and translations.

The script method and system of our invention provides for visualrepresentation of questions. The questions may be visually presented toaccommodate the agent's skill level or the desired flow of the script.This allows for controllably revealing of future questions to thetelemarketer, user, or customer service technician by revealing thecurrent question, all questions within a page or all questions that willdefinitely be reached.

A further aspect of the method and system of our invention is therelationship of the script with one or more underlying or associateddatabases. This provides, among other things, the capability of savingcustomer answers and/or retrieving customer and/or product or servicehistories, characteristics, or properties. Customer answers may be savedin an answer table, which requires no configuration and saves allresponses for questions that an administrator specifies should be saved.These responses may then be transferred to an associated externalapplication for further analysis. In addition, responses can be directlysaved in the business object and/or business component so that it isimmediately accessible by the call center agents. Additionally, defaultanswers may be provided, which may be overwritten when conducting thescript.

A further aspect of our invention is a method of, and a system forcreating, upgrading, configuring, reconfiguring, enhancing, orpersonalizing customer interaction scripts using object orientedprogramming tools, methodology and paradigms, for interaction with theassociated database. For example the upgraded, enhanced, configured orreconfigured, personalized, or customized script may be based upon theunderlying database or databases. The associated database or databasescontain customer data, product and/or service data. The internal logicof the script links the databases to the script to enable using thedatabase contents in a dialog with a customer, and in conjunction withthe internal logic for linking the pages, questions, responses,branches, database accesses, and database contents together. A furtheraspect of our invention is the dynamic creation of questions for ascript through the script's interaction with the database or databases.

According to a further aspect of the method and system of our invention,scripts are distributed to users in the field. This distribution may bebased upon visibility rules of the users in field. That is, a user inthe field may receive only scripts applicable to his or her customer setor product set. In this way, a script may be created that is specific toinput from a database of customer data and product data and a specificuser's contact list. The output is both a script that is directlyapplicable to the customer set, and the user's “task list.”

The script may include a generic answer table, and a business componentfield, with the answers including data to be reflected in enterprise'sbusiness data. The scripting method and system of our inventionfacilitates saving answers to specified questions in an answer table ordirectly in one or more business component(s) and/or associateddatabases. In this way, responses can be saved and stored in differentbusiness components and business component fields.

The user interface of the desktop may be such as to insure thatimportant questions and data are always visible to the user. This isreferred to herein as a dynamic dashboard. Moreover, the desktop viewmay provide a section of the screen that displays script-page-questiontreeing and/or script-page-question-answer-link treeing, in order toenable the user to easily navigate around the script. In addition, asection of the screen may store persistent data about the caller,product interest, owned products, utilized services, and script metrics,for example, such as Time Elapsed and Target Time.

In a preferred embodiment the script is fully integrated among andbetween the global set of scripts, questions, answers, and databaseaccesses, to allow launching of other views and returning to the script.According to our invention capability is provided to automaticallylaunch scripts from a computer telephony integration (CTI) system, orfrom underlying code or commands, as in Visual Basic, JavaScript orVisual C++.

The structure of the underlying system and system logic allows re-use ofindividual pages in multiple scripts. Moreover, the scripting method andsystem of our invention uses object oriented programming techniques,tools, and paradigms, especially for user configuration andreconfiguration. In this way objects may be created, declaring variablesof a provided class or deriving a class, whereby the derived objectsinherit properties from the provided or base objects. This facilitates asingle location of administration, including pre-, and post-validationand branch handlers.

The method, system, and program of our invention provide a high degreeof flexibility to support complex scripting needs, includingmulti-lingual call scripts supporting multi-lingual call centers, andeasy local personalization and modification.

The scripting method and system of our invention facilitates reducingthe navigational choices of the call center user by locking the choicesinto the script user interface and, thereby, enforcing the desiredbusiness process and workflow that the organization wishes its users tofollow. It further facilitates the ability of end-users and end-useradministrators to modify or enhance or personalize the product bycreating new objects and inheriting properties based on existing or baseobjects. The scripting method and system of our invention replacesstandard forms based user interfaces, with a dynamically generated userinterface that uses answers to previous questions and the contents ofunderlying databases to drive the interaction and lead the user througha series of selected questions.

The scripting method and system of our invention may be presented oraugmented in two components, an Agent interface and an Administrationinterface. The Administration interface allows users to define and linkthe various elements of a script together. The information about theelements in the script lives in the database, and the Agent interfacecalls that information.

The method and system of our invention is operable in various scenarios,including, but not limited to (i) a connected standard call centerapplication, (ii) a thin client; (iii) over the World Wide Web or otherinternet or intranet. The script may be launched from (i) an on screenmenu item; (ii) a user response, as when a script is associated with asales campaign or a specific product; (iii) a CTI screen pop up; and(iv) programmatically from Visual Basic, JavaScript, Visual C++ or otherprogram.

The script responses are saved to the associated database in normalizedor denormalized format. By this expedient users are able to access thestored information either for reporting, or calling up from the scriptat a later point in time. Sections or fields of information in thescript may be mapped to business components for automatic save to thedatabase. Users are able to define if those saves occur during thescript or at the time of script save. The script system determines thenature of the information coming from the script (i.e. is the databaseaccess an insert, an update, etc). Separate tables from the standardbusiness components may exist to accommodate these requirements. In afurther interaction with the underlying database or databases,administrators and/or users are able to access standard sets ofinformation from business component databases. These standard sets ofinformation include product information, contact names, and any type ofcustom lookup.

Scripts are able to launch customized VB or JavaScript code and anyother scripting language from anywhere in the script. This code can beused to do any number of actions surrounding the workflow andconfiguration of the script. Users are able to store the code in thescripting tables or the standard location for code/programs.

The scripting method and system of our invention are able to generatedynamic text for the user. For example, an entire block of text (i.e.something a user says to a customer) might be dynamic and driven from asource other than the scripting metadata. Another example would be toinsert a name dynamically into a sentence, or change the wording basedon time of day, etc.

The scripting method and system of our invention may be described andillustrated in terms of its scripting metadata. Scripting metadataincludes information about the script itself, and, optionally, theunderlying databases. The metadata can include a wide range of dataabout the script, from what the interface looks like and how it shouldbehave, through logical branches in the script, to sites of databaseaccess including the type of database access (read, write), the databasefields accessed, data about the database data, and such metadata asinternal and external links, graphics, data structures, and the like.The metadata shows table that are hierarchically arranged with clearrelationships between the script members.

THE FIGURES

The method and system of our invention may be understood by reference tothe Figures appended hereto.

FIG. 1 shows a script, with three Pages depending from it. Each Page hastext questions depending from it. In turn, each question has answersdepending from it. The answers provide branches to other questions.

FIG. 2 illustrates the relationships between the elements of a script.In FIG. 2, L represents the unique links between each of the elements.

FIG. 3 is a flow chart illustrating the flow paths of a scriptedcustomer interaction, in the case of a call to a potential buyer of apager.

FIG. 3 a is a partial illustration of FIG. 3.

FIG. 3 b is a partial illustration of FIG. 3.

FIG. 4 illustrates the script structure and logical relationships of atelephone service or telephone marketing script, with thescript-page-question-answer hierarchy.

FIG. 5 illustrates the procedural connections between major databaseobjects or script elements, including styles.

FIG. 6 illustrates one form of a user window in the scripting method andsystem of our invention.

FIG. 7 illustrates the administrator's view of the script method andsystem of out invention.

FIG. 8 shows a screen shoot of the page designs of the invention withthe questions and the branches out of the questions.

FIG. 9 shows a screen shoot of the verification screen of the invention.

FIG. 10 shows a system of the invention.

DETAILED DESCRIPTION OF THE INVENTION

According to our invention, there is provided a system and a method forfacilitating interaction between a customer and a service provider. Thesystem contains a script and an associated database, where a script is ahierarchical set of structured pages, and at least one of the pagescontains a structured set of questions. The questions each have a set oflikely responses, where at least one and preferably more of the likelyresponses causes the system to either link to an associated database, orlink to another question in the script.

The system, 101, of the invention is shown in FIG. 10. The systemincludes a database, 103, running on a database server 105 with adatabase management system 107, and a call center terminal, 111, runningor having network access to the script software 113. The terminal 111 islinked to the database server 105 and the database, either in aclient-server relationship or through an internet or intranet.

The link to an associated database may be a query. The output of thedatabase may be a link to another question in the script, or datarelated to the interaction. Alternatively, where the link is anotherquestion in the script, the link may be to either the same page or toanother in the script.

The method and system of the invention are implemented in computer codethat causes the system to present a question to a user, receive aresponse from the user, and branch as a result of the response. Thebranch may be a link to the associated database, or to another questionin the script. Where the link is to an associated database, it may causea query of the associated database. In turn, the associated database maycause the database to output a link to another question in the script,or to output data related to the interaction. Alternatively, thecomputer program code may cause a link to another question which is inthe same page or another page in the script.

A further aspect of our invention is a method of facilitatinginteraction between a customer and a service provider utilizing a scriptand an associated database, where the script has a hierarchical set ofstructured pages, with at least one of the pages having a structured setof questions. At least one of the questions has a set of likelyresponses. The responses drive the logical flow of the process, witheach different response likely causing the system to either link to anassociated database, or link to another question in the script. Thefirst step in the method of our invention is the presentation of aquestion to a user, and receiving a response from the user. The methodthen generates a branch in response to the user's response to thequestion. The branch causes a to link to an associated database, or toanother question.

A further aspect of our invention is the facilitation of end-usermodifications, personalizations and customizations by deriving anddefining objects, as classes, functions, and variables based uponincorporated or base objects, as classes, functions, and variables,using the methods of object oriented programming.

Terminology

Throughout this document, we will use the following terms in referenceto the scripting method and system of our invention:

-   1. A Question represents a single interaction between a call script    and the phone operator, user, or agent. Questions may be either a    block of actions that a user must say (demonstrative) or do, or an    actual questions (interrogative). Questions are attached to groups    and choices, and represent a single interaction between a user and    the system or underlying associated data base. Questions may have    answers and may not even collect information.-   2. An Answer is a specific value defined for a question. Answers are    used both to constrain user responses to questions and to control    navigation from that question.-   3. A Script Wizard script is an ordered set of Questions and the    branches between them. Questions can be used in more than one script    and are associated with scripts only through the branches.-   4. A Script is an ordered set of Pages and the branches between    them. Each page defines branching within it much like Script Wizard    scripts. The Script defines branching only between pages.-   5. An Branch is a single link between one question and another or    one page and another representing a transfer of control.-   6. A Page is a set of questions, including branching, which can be    used in more than one script.-   7. The Script Wizard is a set of dialogs which prompt the user    through the call script. The wizard presents the current question,    validates the user input (if any) and transitions to the next    question.-   8. The Script UI is a tabbed dialog which presents more than one    question at a time and organizes questions into pages. This is also    called the Dynamic Desktop.-   9. A Choice is an option or set of options for the user to select as    an answer to a question. Choices are attached to questions as a set    of permitted responses. Choices may have scores and weights    associated with them.-   10. A Branch is a point of logical flow in the script, serving as a    link between one question and another, or one page and another,    representing a transfer of control within the script. Branches carry    the user from one place in the script to the another place in the    script. Branches may occur FROM questions, pages or scripts and TO    questions, pages or scripts. Branching may be implicit, explicit or    computed    Scripting

According to our invention, scripting is the use of ordered andstructured sets of pages of ordered and structured sets of logicallylinked questions and sets of likely responses thereto, with branchingfrom and to questions, and accessing of associated databases, forexample to drive branching or subsequent questions. Scripting can beillustrated by considering the scripting metadata. Metadata is used herein the sense of “data about the data” and refers broadly to thestructure and architecture of the data. Scripting metadata includesinformation about the script itself, what it looks like, how it shouldbehave, and how it should be driven by scripting metadata as shown inFIGS. 1 and 2. FIG. 1 shows a script, 11, with three Pages, 13 a, 13 b,13 c, depending from the script, 11. Each Page, 13 a, 13 b, 13 c, inturn, has text questions, 15 a, 15 b, 15 c, depending from it. Likewise,each question 13 a, 13 b, 13 c in turn, has answers, 17 a 1, 17 a 2, 17b 1, 17 b 2, 17 c 1, 17 c 2, depending from it. The answers, 17, providebranches 21 a 1, 21 a 2, 21 b 1 and 21 b 2, to other questions, or toother functions within the script, such as the retrieval of informationfrom associated databases.

The structure and order is illustrated by considering the scriptmetadata structure in terms of tables. The tables making up the scriptare hierarchically arranged with clear relationships between thefollowing members: script-page-question-answer.

Property type information may be passed from elements at a higher levelof the script to elements at lower levels of the script. The user isable to over-ride the introduction of property type information at anylower level.

FIG. 2 illustrates the relationships and interactions between theelements of the script. In FIG. 2, “L” represents the unique linksbetween each of the elements of the script. Using the illustration ofFIG. 2, according to our invention, a script, 11, has properties, 12,and is a structured and ordered flow of information, where informationis elicited by structured and ordered pages and/or groups of questions,13, with page or group properties, 14, of structured and orderedquestions, 15, with properties, 16, and where the information providedin response to the questions, 13, either drives, through choices, 19,and branches and links, 21, subsequent questions, provides input to oneor more associated data bases, or elicits an output from an associateddatabase.

In this regard, scripting can be illustrated by considering the flow ofinformation in a scripted interaction. This is shown graphically in.FIGS. 3, 4 and 5. FIG. 3 is a flow chart illustrating the flow paths ofa scripted customer interaction, in the case of a call to a potentialbuyer of a pager. FIG. 4 illustrates the script structure and logicalrelationships of a telephone service or telephone marketing script, withthe script-page-question-answer hierarchy. FIG. 5 illustrates theprocedural connections between major database objects or scriptelements, including styles.

Turning to FIG. 3, there are four pages, the customer id page, 13 ^(i),the product description page, 13 ^(ii), the convince to buy page, 13^(iii), and the order information page, 13 ^(iv). The customer id page,13 ^(i), starts out with courtesy questions, 17, and responses 19, 19 a,19 b. Note that responses 19 a and 19 b, that this is either a good timeor a bad time to call lead through different links, link 21 ^(i) that isa bad time leads to terminating the call, while link 21 ^(ii), that thisis a good time to call leads to a subsequent question, “Do you have apager?” This also leads to a branch, with a “yes” answer going thoughlink 21 ^(iii) to the exit, while answer “No” leads through link 21^(iv) to the product description page 13 ^(ii). The first question 17 onthis page is “Are you familiar with pagers?” A “No” answer leads thoughlink 21 ^(v) to a second attempt to interest the customer, i.e., “Wouldinstant notice of news items be useful?” Again, a “No” answer leads tothe exit through link 21 ^(vi). A “Yes” answer to “Would you beinterested in one?” leads to another page, 13 ^(iv), the “OrderInformation” page, while a “No” answer leads to “Would instant notice ofnews items be useful?” Again, a “No” answer leads to the exit throughlink 21 ^(vi), while a “Yes” answer leads to another page, 13 ^(iii),the “Convince to Buy” page. This same type of logic is carried forwardinto the subsequent pages, 13 ^(iii), and 13 ^(iv).

FIG. 4 shows the underlying logic of a script 11, with pages 13,questions 17, answers 19, and links 21. FIG. 5 shows the relationship tothe script metadata, with script styles, 31, page styles, 33, andquestion styles, 37, feeding to scripts 11, pages, 13, and questions,17, and answers, 19, along with the branches and links previouslydefined.

FIG. 6 shows the script 11 view seen by a user, with text 15, questions17 (“Need license key?”, “Need upgrade to Siebel 99”, “Need assistanceon new Smart Script”), with the answer to “Need assistance on new SmartScript” leading to another question (“How long have you been workingwith Smart Script?) and answer 19 choice box, and a subsequent question“Have you read the documentation?” 17.

The top applet on the view of FIG. 6, element 61, is the persistentinformation about the customer contact and the product, service, orcampaign. This should remain visually available throughout the scriptexecution. The desktop area should display one script page at a time.These script pages are launched upon script execution, via branchingfrom another question, via branching from another script, or followingin order from the completion of the previous page.

Users view the scripts and navigate through different pages by clickingon the linked script or page nav bar. Opening up the linked script navbar explodes the view into all of the scripts linked to this script.Scripts that have already been touched may be a different color, size,or font, or if a script property is set, may not be visible. This willmean that these menu items are not designed during design, but aredynamically created at run time. The same property applies to pages aswell.

The explorer tree view, 71, shown on the left of FIG. 7, allows users tonavigate through the list of scripts, pages and questions in ahierarchical fashion. The script path view allows the user to see a listapplet of all questions that have been asked in this script session. Thecall script page area is shortened and scroll bars appear for horizontaland vertical scrolling. An example of the call script branches view islisted below.

The Explorer shows a tree control of the script path with the groups andquestions answered. The user is able to navigate to any place in thescript from that tree control.

Users are able to configure and reconfigure scripts, that is, users areable to build components one at a time and link them together as theybuild (top down script building) or create all script components andthen link them together (bottom up method).

The structural diagram, shown in FIG. 7, contains a high level, metadataview of the links between questions, 17, and pages, 13, and illustratesthe ability for the administrator to navigate through the list ofscripts, related scripts (i.e. groups) pages, questions and answers.FIG. 8 shows a further logical and metadata and schema view of thescript 11 for the telephone sale of a computer, where question 17 a is aconfirmation of interest, and actions 18 a and 18 b are links to adatabase to input interest, 18 a, and find a solution, 18 b. Question 17b is a confirmation of computer, with an input of a computer 18 c by therepresentative if the customer does not specify a computer. The nextquestion 17 c, request a computer model input with links to arecommendation, 23 c, and “when Purchase”, 17 d.

When a script is launched, the page sequence determines which pages willcome into view first. The pages will appear in a pre-configured applettype called a call script applet. Within, for example, Siebel Tools, theconfigurator will determine the applet size in sectors and mark thisapplet as a call script applet. This applet region, in turn, isactivated when a call script is in operation. The call script linked tothat view determines the behavior of the call script applet region. Thisoperation is performed as part of call script administration.

Multiple questions for a given page may appear at the same time and theuser can enter answers to the questions in any sequence.

Programs

Provide a place for users to create modular event names that can be usedanywhere in a script. These would appear in the handler drop down in theproperties views. Any event that has been created can be used as anytype of event, except for computed branches. There should be a check boxto denote computed branches.

Administrators/Authors are able to export scripts and import them. Theexport process should export the script in a transportable mode so thatit can be easily imported into another database with possible differentmetadata repositories. Among items that can be exported are thehierarchy and all of its script/group/questions/choices/branches andtheir properties. Importing notifies the user if there is an error orconflict. The import process should load all of the new information intothe database with new ids or utilize existing objects.

Objection Handling. A view may be created for users to create objectionsand their rebuttals.

The Data Model

Various tables are needed to support Scripting (see the Appendix fortable listings). Interface tables are also needed for exporting theanswer tables.

Questions and Answers

The tables which contain questions and answers are separate from theactual Scripts which use those questions so they can be reused inmultiple scripts. The tables include, among others, S_CS QUEST andS_CS_ANSWR, each with a translation table (S_CS_QUEST_LANG andS_CS_ANSWR_LANG). Answers are children of questions and each answer canbe used by only one question. Each translation is a child of a singlequestion or answer. All foreign keys in the system named QUEST_ID pointto S_CS_QUEST (not the translation) and all keys named ANSWR_ID point toS_CS_ANSWR.

Answers are children of questions, in a many-to-one relationship. Eachquestion may have zero or more answers. Individual answers aredistinguished by their ORDER_BY column (an integer value). This ORDER_BYcolumn indicates the order in which the answers are to be presented inthe question. The user key columns for S_CS_ANSWER are QUEST_ID andORDER_BY.

An important attribute of a question is it's “answer type”(S_CS_QUEST.ANSWR_TYPE_CD). This type code identifies the type of datacollected by the question.

Another important attribute is the “choice” flag(S_CS_QUEST.CHOICE_FLG). If this flag is true, the user must pick fromthe list of answers for the question (and answers must exist). Thewizard will display multiple choice questions in a combo box. If answersare defined, the combo box will be read-only (a “drop-list”) otherwiseit will be editable. If this flag is false, the answer is notconstrained to an explicit list of values. The wizard will displaynon-multiple choice questions with edit boxes (usually).

Translations are many to one for questions and answers. There must exista translation for each question for each language the call script may betaken in (since the translation of the question is the actual textdisplayed in the wizard). Translations need not exist for answers, butshould probably exist for answers to multiple choice questions. If atranslation does not exist for an answer, and the question ismultiple-choice, the value for the answer (S_CS_ANSWR.VALUE) will bedisplayed.

The translation for a question also contains a long column CS_TEXT,which is used for free-form text displayed to the user when the Helpbutton is pressed. This should be used to convey any additionalinformation related to the question which the call taker may need toknow.

Each question also contains the name of the business component Field thedata it collects is meant to be stored in. If the question is a currencyquestion, it also uses a separate field for the currency code. The namesof these fields are stored in the SAVE_FIELD and CURCY_FIELD columns.For questions used in Scripts the SAVE_BUSOBJ and SAVE_BUSINESSCOMPONENTS columns should also be used since fields in more than onebusiness components can be saved to.

New questions and answers may be created, as well as new sources ordatabases for questions, and new destinations or databases for answersmay be created by declaring new objects of a base object and by makinguse of objects, variables, and functions in the existing class, throughinheritance.

Scripts

Graphically, a “script” may be represented by a graph whose nodes arepages, sets of questions, or even individual questions. Each traversalof the script is an execution of the call script. “Branches” are shownas children of a script and link questions used in that call scripttogether.

This is shown in FIG. 8, which is a screen shot of the script designerapplication of the invention, and includes a logical overview of thescript, with questions and links.

A script has a translation which includes the label for the call scriptand a long column which can be used to store information related to thecall script (such as help). Scripts are stored in S_CS_PATH, branches inS_CS_EDGE and script translations in S_CS_PATH_LANG.

Since questions are linked together only in the context of a script (orpage), individual questions may be used in any number of Scripts. Thenavigation between questions is specific to a call script. The scriptitself has a foreign key to the question which comes first in the script(S_CS_PATH.START_QUEST_ID). The branches are children of a script anddefine a transition from a question in the script to another question.There may be multiple branches “from” a single question, each of whichrepresents a potential transition. The user keys for S_CS_EDGE are theparent script (PATH_ID), the from question (FROM_QUEST_ID) andoptionally the answer in the from question (FROM_ANSWR_ID). If there ismore than one branch from a question, the branches differ by the answerthey represent. A branch from a question with no answer (NULLFROM_ANSWR_ID) represents a “default” transition from that question.This allows different Scripts to even take different transitions basedon the same question.

There should be a branch from each answer to a question, e.g., a prioror subsequent question, or a branch without an answer (the defaultbranch). There may be branches for some of the answers, but not all, anda default. In this case, if one of the answers for which there is abranch is chosen, that branch is used, otherwise the default branch isused. If there is no default branch and no branch for a particularanswer, that answer is invalid for this call script.

Each question in the script which has no branches from it is a terminalquestion in the script (the end of the call script). When such aquestion is reached, the wizard changes the “Next>” button to “Finish”and ends the interaction when the user presses it and Scripts will jumpto the Finish button.

A call script is designed to work with certain fields of a singlebusiness component. The name of the business components for which thecall script was designed is stored in the SAVE_BUSINESS COMPONENTScolumn. Scripts are designed to work with zero or more businesscomponents and the business components column is left blank.

Internally, in a graphical representation, scripts are implemented with“paths” and branches are implemented with “edges.”

Pages

Questions can be collected into pages. Each page is represented by a rowin S_CS_PAGE. In this regard, a primary use of pages is to organize setsof questions for re-use within scripts. A page is used in a script bycreating a branch to that page or by setting the scripts start page. Ascript that includes a page implicitly includes all questions definedwithin the page. In addition, a page of questions is displayed in aseparate tab of the Script UI.

Edges have been enhanced to make the NEXT_QUEST_ID optional, which isvalid if NEXT_PAGE_ID is specified. In this case, the script branches tothe START_QUEST_ID of the page instead of a specific question, makingpages usable as a black box.

Also, branches may be defined as belonging to the page by having a NULLPATH_ID. In this case, the branches specified by the page are mergedinto the branches specified by the script. If a branch specifies ascript and a page, it overrides the page-specific branch.

Like scripts, questions and answers, pages have translations. TheS_CS_PAGE_LANG table contains child records of S_CS_PAGE for eachspecified language. The first line of this text represents the page tab(short tag) and the test the help or informational text associated withthe page.

Styles

Styles are a collection of visual attributes for scripts which can bere-used between different call script elements. Paths, pages andquestions all have a style reference. Styles currently specify the fontface, size and text color, with each element being optional. Settingsmade at a higher level (script, page) inherit downwards if not specifiedat a lower level (page, question). Each row in S_CS_STYLE represents asingle style that can be picked for a script, page or question.

One style table has columns representing the individual attributes ofthe style. This is simpler and easier to manage than otherrepresentations and will lead to faster script loading. Also, there isonly a single style table for all script elements. This allows theinheritance to work in the most natural way as new elements are added(question defaults can be specified at the script level) and styles tobe reused at all levels.

Note that the elements of the styles are also settable on individualscripts, pages and questions regardless of the chosen style.

Answer Tables

Answer tables are needed to support scripts, especially those scriptswhich just collect data without requiring business components fields tostore it. This is done by allowing answers to be stored in generic“answer tables.” For a script which includes any questions which aremarked as being stored in the answer table, a new record will be createdin S_CS_RUN. Each question answered in that script for which answers areindicated to be stored will create a child record S_CS_RUN_ANSWR. Theremay be no additional functionality to process the answer tables,although they can be viewed from the client and exported throughEnterprise Integration Manager (EIM).

Invoking Scripts

Scripts are invoked on a specific applet, against its businesscomponents. These have been and continue to be invoked using the appletInvokeMethod RunCallScript. Because Scripts are not applet-specific andin fact cause a new view to be gone to, they are invoked using theapplication InvokeMethod RunScript.

For consistency, the arguments to RunScript may be identical toRunCallScript, except, for example, for an additional viewNameparameter. This parameter allows an alternate view to be gone to (otherthan the default “Call Script Player View”). This is useful if analternate view is configured for a specific purpose. The view specifiedmust contain an instance of the “Call Script Player Applet” somewhere onit to present the Script interface.

CancelScript and ResumeScript Take No Parameters.

Integration With Computer Telephony Integration (CTI) Systems Scriptscan be invoked by CTI. The client-side CTI machinery can be configuredto invoke a Script rather than go to a particular database row. This isdone by defining some new parameters in the appropriate EventResponsesection of the CTI configuration file. If any parameters are foundprefixed with Script, a Script will be invoked and the parameters passedto it. The parameters which are available are:

-   -   Script.ContactId    -   Script.CampaignId    -   Script.CampContactId    -   Script.ScriptName    -   Script.ScriptId    -   Script.LanguageCode    -   Script.CurrencyCode    -   Script.ViewName

Either ScriptName or ScriptId must be specified to start a specificscript. Otherwise, the user will be prompted for the script to run asusual.

CTI variables (from the switch) are available as well. These can begotten through SVB using the GetCTIParameter function on the Scriptobject. They can also be included in the Dashboard as variables usingthe CTI prefix (for example: “[CTI.ANI]” for Caller ID information).

The Script UI

The method and system of our invention includes a screen tab“SmartScripts” which will be used when scripts are startedprogrammatically and which can be navigated to by the user.

When the Script tab is clicked on by the user, a dialog will come upwhich forces them to choose a Script (any script with NULL businesscomponents). When a script is started programmatically, the specifiedscript will be set up automatically.

Call Script Authoring

Basic administration views allow creation of questions, scripts andpages through traditional list and form applets as well as throughobject oriented programming, as illustrated generally in FIG. 8.

Entering Questions and Answers

The view for entering and editing questions is “Call CenterAdministration|SmartScript|Questions View.” This view is used to enterquestions and their translations and their answers and translations.

Entering Scripts

The views “Call Center Administration|SmartScript|Scripts View.”, and“Call Center Administration|SmartScript|Script Branches View.” are usedto enter the script. These views use a drill-down metaphor to displayeach page in the script and the possible transitions to next pages.Picklists are used to select the pages, questions and the answers.

The views “Call Center Administration|SmartScript|Pages View.”, and“Call Center Administration|SmartScript|Page Branches View.” are used toenter the pages.

Applications of the Scripting Method and System of Our Invention

In one application, a customer calls company X after receiving a directmail piece about a new product offering, product Foo. In a CTI enabledsystem, the DNIS is identified and checked against the database for theappropriate campaign. ANI of the customer is also identified, and theuser gets a screen pop of the script for product Foo with informationabout the customer filled into fields in the script. The user canaddress the customer, and can continue with the script. If the customeris not calling about product Foo, then the user can close the script andcarry on with another activity, maybe collecting information in aresponse, or even launching another script, or transferring the call.

If the customer is calling about Foo, then the user (that is, the callcenter representative) can move through the script. As the customeranswers questions for the user, the script navigates the user throughthe call. The workflow changes based on answers the customer hasprovided, so that the user is saying things that are meaningful to thecustomer.

If the customer changes his or her mind about something, the user can goback in the script, change the entry, and re-branch, if necessary, to anew location.

Information about the customer that resides in the database can be usedto verify current products owned, address information, etc. and the usercan update that information directly from the script.

If the customer decides to order the product, the user can enter orderinformation directly into the script, or have the system launch theorder entry view or even launch another system. Information gathered inthe script can be passed to other databases, scripts, pages, or otherelements in order to facilitate the workflow. Any information can alsobe sent back to the script for verification.

When the user is done with the script, he or she saves the session. Theinformation is stored in the database. A marketing manger can go backand report on how many customers answered YES or NO to a specificquestion, or determine the correlations between answers to sets ofquestions and run a campaign based on that information.

For example, using the method and system of this invention, an end-usercould write or modify a script using a derived object called MyScript.This is illustrated by the objects shown in Appendix A. For example, theuser function MyScript.GetPage would return a page of the script byname. The script would then get a question by callingMyScript.GetQuestionText. The user function MyScript.GetPriorValuereturns the prior value of the answer to the question for this customer,before the user or representative made any customer entries.Alternatively, the function MyScript.GetInitialValue would return thebeginning value of the answer to the question. Next in the user writtenroutine, the function MyScript.GetSaveBusinessComponents is called todefine where the answer is to be stored. Finally, the user derivedfunction MyScript.SaveValue is called to store the customer's answer.

After writing or modifying a script the user can verify the internallogic and integrity of the script. This can include checking forunreachable pages, verifying pages used by the script, checking forunreachable questions, checking for missing answer branches, andchecking for required translations, among other things. A further aspectof verification is to insure that all required components and objectsare defined, and that there are no orphaned objects. A screen shot of anapplet for accomplishing this is shown in FIG. 9.

FIG. 9 shows a verification dialog box 51, with check boxes to check formissing pages, 53, to verify pages used by the script, 55, to check forunreachable questions, 57, to check for missing answer branches, 59, andto check for required translations, 59. Verification is an iterativeand/or a recursive process, which goes through questions, responses,branches, and links in a script to verify that there are no unreachablepages (that is, that there are no pages which lack calls to them ortransfers into them), that there are no unreachable questions (that is,that there are no questions which lack calls to them or transfers intothem, and, that there are no missing branches (that is, there are nobranches which lack a source or a destination). These verifications maybe made by working backwards from target questions and/or pages tosource questions and/or pages, or by exhaustively working forward fromsource questions to target actions. Verification also includes verifyingthat all pages are used by the script, and that required translationsand conversions are present.

To be noted is that MyScript uses only supplied objects, functions, andvariables, inheriting the properties of the reusable code, and directlycalling public functions. The internal operations of the objects neednot be visible to the end user.

While the use of object oriented program has been illustrated by the useof an artifact called “MyScript” and the construction “MyScript.Object”, it is, of course, to be understood that the point-and-click,drag-and-drop method of programming could just as easily be used.Furthermore, while the invention has been illustrated using objectoriented programming, objects, and MS Visual Basic, it is to beunderstood that other programming languages and programming paradigmsmay be used.

APPENDIX A Script Functions Written in MS Visual Basic

The Script object type will represent the entire state of a singleScript being executed. Note that there is generally only a single scriptexecuting at any one time. An end-user seeking to personalize andenhance or otherwise customize the product, system, and method of thisinvention has the flexibility to add derived objects to these functions,and draw upon the internals of the functions through inheritance andcode reusability.

Sub Cancel

-   -   This function causes the currently running script to be        cancelled. This has the same effect as if the user had pressed        the Cancel button in the applet.        Function CurrentPage ( ) as ScriptPage    -   This function returns the current page of the executing Script.        Note that it is possible for there to be no current page, if the        current question is not configured as part of any page, but as        part of the Script itself.        Function CurrentQuestion ( ) as ScriptQuestion    -   This function returns the current question of the executing        Script. This will always return a question object if the script        is actively executing.        Function ExecutionState ( ) as Integer    -   This function returns a representation of the current state of        the Script, represented as an integer value. The values are        represented by the constants: ssInitializing (1), ssRunning (2),        ssFinished (3), ssCancelled (4) or 0. If 0, the Script object        has not been set up for execution (perhaps when enumerating        available scripts).        Sub Finish    -   This function causes the currently running script to be        finished. The collected answers are saved as appropriate. Note        that this can fail if the user has not answered all the        questions which require answers (mandatory questions).        Function GetCampaignId ( ) as String        Function GetCampContactId ( ) as String        Function GetContactId ( ) as String    -   These function returns the campaign ID, campaign/contact ID and        contact Id as set up by the CTI machinery for outbound calls and        for inbound calls if available. This information is stored in        the session log for calls if available.        Function GetCTIParameter (Name as String) as String    -   This function returns a CTI switch parameter by name. This is        useful for getting the switch-specific information if the Script        was started through the CTI mechanism.        Function GetDashboardText ( ) as String    -   This function returns the current value of the Dashboard text        (Descriptive Text), perhaps changed with SetDashboardText. Note        that the actual value displayed may have substitutions made, but        the pre-substitution text is returned by OriginalDashboardText.        Function GetLabelText ( ) as String    -   This function returns the language-specific label text for the        script. This shows up in the page tab for questions which are        part of the script itself (no page) and can be used in error        messages or other user interactions.        Function GetPage ( ) name as String) as ScriptPage    -   This function returns a page of the script by name. Note that        this name is the non-translated name set during authoring, not        the label displayed for a particular language.        Function GetQuestion (name as String) as ScriptQuestion    -   This function returns a question of the script by name. Note        that this name is the non-translated name set during authoring,        not the question text displayed for a particular language. This        question must be one configured within the script itself (not in        any page).        Function OriginalDashboardText ( ) as String    -   This function returns the configured value of the Dashboard text        (Descriptive Text). Note that the actual value being displayed        is returned by GetDashboardText.        Sub SetCampaignId (ID as String)        Sub SetCampContactId (ID as String)        Sub SetContactId (ID as String)    -   These procedures set the campaign ID, campaign/contact ID and        contact ID if gathered through script execution. This        information is stored in the session log.        Sub SetDashboardText (Text as String)    -   This procedure changes the Dashboard text (Descriptive Text)        displayed at the top of the Script applet. Note that the actual        value displayed may have substitutions made.        Function StartPage ( ) as ScriptPage    -   This function returns the configured start page on the Script        itself. Note that this may be Nothing if the script does not        have a configured start page (such as when the start question is        within the script itself).        Function StartQuestion ( ) as ScriptQuestion    -   This function returns the configured start question on the        Script itself. Note that this may be Nothing if the script does        not have a configured start question.        Function SubstituteText (Text as String, Variable as String,        Value as String) as String    -   This function substitutes a single value in the Text, found as        [Variable] with the Value and returns the changed text. Note        that this can only be done once because the entire string        “[Variable]” is replaced with the Value, but it can be called        repeatedly to translate multiple values.        Sub Script_Open    -   This post-event is called after the Script is opened and        execution is ready to begin. This is where the dashboard text        can be updated, etc.        Sub Script_Cancel    -   This post-event is called when the script is cancelled to allow        any last-minute cleanup or post-processing. If an error is        raised during this procedure, it will be displayed to the user,        but the script will remain cancelled.        Function Script_PreFinish as Integer    -   This pre-event is called when the user requests that the script        be finished (usually by pressing the Finish button). This is a        good place to check additional constraints on the script, which        were not set up through configuration.        Sub Script_Finish    -   This post-event is called after the script has been finished to        allow any last-minute cleanup or post-processing. If an error is        raised during the procedure, it will be displayed to the user,        but the script will remain finished.        Sub Script_Save    -   This post-event is called after the normal script state has been        saved to business components and the answer table, but before        the Script_Finish. This is a good place to save additional state        collected by the Script not stored by the normal mechanisms.        ScriptPage VB Object    -   The ScriptPage object type will represent a single page of a        Script being executed. This object is not directly scriptable,        but is programmatically accessible using the methods of object        oriented programming.        Function GetHelpText ( ) as String    -   This function returns the language-specific, context-sensitive,        help text associated with the page. This may or may not be        present, but if it is it is additional context information for        the user.        Function GetLabelText ( ) as String    -   This function returns the language-specific label text for the        page. This shows up in the page tab and can be used in error        messages or other user interactions.        Function GetQuestion (name as String) as ScriptQuestion    -   This function returns a question of the page by name. Note that        this name is the non-translated name set during authoring, not        the question text displayed for a particular language.        Function Script ( ) as Script    -   This function returns the containing script of the page.        Function StartQuestion ( ) as ScriptQuestion    -   This function returns the configured start question on the page.        Note that pages must have a start question so this cannot be        Nothing.        ScriptQuestion VB Object

The ScriptQuestion object type will represent a single question of aScript being executed. This object is the smallest granularity and mostoften scripted, using the methods, tools, and techniques of objectoriented programming.

Function AnswerType ( ) as Integer

-   -   This function returns the type of answer the current question        collects. The return value will be one of: ssString (1),        ssInteger (2), ssNumber (3), ssCurrency (4), ssBoolean (5),        ssDate (6) or ssInformation (7).        Function CurrencyFieldName ( ) as String    -   This function returns the configured field name in which the        currency code is stored. Note that this is only used for        questions which accept currency values (AnswerType=ssCurrency).        Function GetCurrentCurrencyCode ( ) as String    -   This function returns the current currency code entered by the        user for this question (if a currency question). This may have        changed many times as the user worked through the script.        Function GetCurrentExchangeDate ( ) as String    -   This function returns the current currency exchange date entered        by the user for this question (if a currency question). This may        have changed many times as the user worked through the script.        Function GetCurrentValue ( ) as String    -   This function returns the current value entered by the user for        this question. This may have changed many times as the user        worked through the script.        Function GetHelpText ( ) as String    -   This function returns the language-specific help text associated        with the question. This may or may not be present, but if it is        it is additional context information for the user.        Function GetInitialCurrencyCode ( ) as String    -   This function returns the initial currency code for this        question before the user started executing the script (if a        currency question). This is usually Empty unless the value came        from a business components field or was set up by VB in        Script_Open.        Function GetInitialExchangeDate ( ) as String    -   This function returns the initial currency exchange date for        this question before the user started executing the script (if a        currency question). This is usually Empty unless the value came        from a business components field or was set up by VB in        Script_Open.        Function GetInitialValue ( ) as String    -   This function returns the initial value for this question before        the user started executing the script. This is usually Empty        unless the value came from a business components field or was        set up by VB in Script_Open.        Function GetPriorCurrencyCode ( ) as String    -   This function returns the currency code for this question before        the user got to it the most recent time (if a currency        question). This may be GetInitialValue if the user has never        entered the question or the GetCurrentValue after the user left        it the most recent time. This is usually only used for the        current question.        Function GetPriorExchangeDate ( ) as String    -   This function returns the currency exchange date for this        question before the user got to it the most recent time (if a        currency question). This may be GetInitialValue if the user has        never entered the question or the GetCurrentValue after the user        left it the most recent time. This is usually only used for the        current question.        Function GetPriorValue ( ) as String    -   This function returns the value for this question before the        user got to it the most recent time. This may be GetInitialValue        if the user has never entered the question or the        GetCurrentValue after the user left it the most recent time.        This is usually only used for the current question.        Function GetQuestionText ( ) as String    -   This function returns the displayed question text unless        previously changed with SetQuestionText. The original configured        text can be gotten with OriginalQuestionText.        Function GetSavebusiness components ( ) as business components    -   This function returns the instance of the business component        used to store the answer in. If no field and business components        are configured on this question, it returns Nothing.        Function GetSaveBusObj ( ) as BusObj    -   This function returns the instance of the business object used        to store the answer in. If no business components or BusObj are        configured on this question, it returns Nothing.        Function HasDefaultAnswer ( ) as Boolean    -   This function returns true if the question is configured with a        default answer (Default Answer chosen).        Function MustAnswer ( ) as Integer    -   This function returns true if the question is configured to        require an answer (Must Answer checked). It can be use as a        true/false value or broken down into the actual tri-state        values: ssOptional (0), ssMandatory (1) and ssIfReached (2).        Function OriginalQuestionText ( ) as String    -   This function returns the configured value of the question text.        The actual value displayed is gotten through GetQuestionText.        Function Page ( ) as ScriptPage    -   This function returns the containing page of the question.        Function Script ( ) as Script    -   This function returns the containing script of the question.        Function Savebusiness componentsName ( ) as String    -   This function returns the configured business component in which        the answer is stored. This should have been specified if a field        was specified.        Function SaveBusObjName ( ) as String    -   This function returns the configured business object in which        the answer is stored. This should have been specified if a field        and business components were specified.        Function SaveFieldName ( ) as String    -   This function returns the configured field name in which the        answer value is stored. This may not be present for all        questions.        Sub SetCurrentValue (Value as String, [CurrencyCode as String,        ExchangeDate as String])    -   This procedure sets the value for the question as though the        user had entered it. All validation and branching is activated.        If the question is a currency question (answer type is        “Currency”), the currency code and exchange date should also be        specified.        Sub SetQuestionText (Text as String)    -   This procedure changes the displayed question text. Note that no        substitutions are supported in the question text automatically.        Function SubstituteText (Text as String, Variable as String,        Value as String) as String    -   This function substitutes a single value in the Text, found as        [Variable] with the Value. Note that this can only be done once        because the entire string “[Variable]” is replaced with the        Value.        Function WasAnswered as Boolean    -   This function returns true if the user answered this question        and false otherwise. Note that just passing through a question        does not count as answering, the user must type or pick a value.        Sub Question_Enter    -   This post-event is called after the question has been entered        and all pre-question processing is complete. This is a good        place to change the question text or set the current value.        Function Question_PreLeave as Integer    -   This pre-event is called on the question before the user leave        it by jumping or proceeding (but not by Undo or Backup). This        allows question-specific validation to be performed.        Function Question_PreBranch (Answer as String ByRef) as Integer    -   This pre-event allows the choice of answer to be substituted by        the VB script. If this event is not overridden, the normal        branching logic of matching answers to branches is performed.        The final value of the Answer argument is compared against the        answers given to determine which branch is taken out of this        question. This allows arbitrary processing to determine        branching (among pre-configured branches) regardless of the        actual stored answer. The value returned in the parameter will        not be stored as the answer to the question, but will be used to        choose the answer used for branching.        Sub Question_Leave    -   This post-event is called on the question after branching has        been determined and all built-in validations have been        performed.

APPENDIX B Database Tables

This appendix lists the tables related to call scripting. In theselistings, the system columns always come first (and are the same forevery table), followed by the user primary key columns, and lastly theattribute columns. Each group is separated by a horizontal rule. Forchild tables, the first of the user key columns is a foreign key intothe parent table. A brief description of each column is given here

Column Description system columns Required Type standard system columnsS_CS_QUEST NAME Yes varchar(100) Identifier of question (administrationonly) ANSWR_TYPE_CD Yes varchar(30) Type of answer collected forquestion CHOICE_FLG Yes char(1) Is this a multiple-choice question?MIN_VAL No number Minimum for numeric and date question MAX_VAL Nonumber Maximum for numeric and date question CURCY_CD No varchar(20)Currency code value for min/max SAVE_FIELD No varchar(100) BusComp fieldto save value to CURCY_FIELD No varchar(100) BusComp field to savecurrency code to SAVE_BUSOBJ No varchar(75) BusObj for save contextSAVE_BUSCOMP No varchar(75) BusComp to save value in ANS_TBL_FLG Nochar(1) Do we save response in answer table? MUST_ANSWER_CD Novarchar(30) Answer is required before proceeding STYLE_ID No varchar(15)Style used for question FONT_FACE No varchar(255) Font face for questiontext (override) FONT_SIZE No number Font size (override) TEXT_COLOR Novarchar(30) Text color (override) DFLT_ANSWR_ID No varchar(15) Answerpicked by default DET_APPLET_NAME No varchar(75) Detail applet (specialvalue interface) PICK_APPLET_NAME No varchar(75) Picklist applet(multi-column picklists) MVG_APPLET_NAME No varchar(75) MVG applet IfANS_TBL_FLG is true, user responses are saved to S_CS_RUN_ANSWR whenscript is saved. STYLE_ID specifies the style for this question.Elements not specified are inherited from the page, then the script(script). FONT_FACE, FONT_SIZE, TEXT_COLOR are elements of the stylewhich may be overridden on this particular question. S_CS_QUEST_SCPTQUEST_ID Yes varchar(15) ID of parent call script question NAME Yesvarchar(75) Name of procedure SCRIPT No long Body of procedure (VB)SEQUENCE No number(10) Order in which procedures are compiledS_CS_QUEST_LANG QUEST_ID Yes varchar(15) ID of parent question LANG_IDYes varchar(15) Language for this translation QUESTION Yes varchar(255)Translation of the question text CS_TEXT No varchar(2000) Translation ofthe help text S_CS_ANSWR QUEST_ID Yes varchar(15) ID of parent questionORDER_BY Yes integer Order of answer in question (1-based) VALUE Yesvarchar(255) Save value for answer (literal) CURCY_CD No varchar(20)Currency code for save value S_CS_ANSWR_LANG ANSWR_ID Yes varchar(15) IDof parent answer LANG_ID Yes varchar(15) Language for this translationANSWER Yes varchar(255) Translated label for answer S_CS_PATH NAME Yesvarchar(100) Identifier of call script (administration only)START_QUEST_ID No varchar(15) ID of first question in path SAVE_BUSCOMPNo varchar(100) [BusComp] name script is designed for EST_CS_DURATION NoNumber Expected call script duration DURATION_UOM_CD No varchar(30)Units for EST_CS_DURATION START_PAGE_ID No varchar(15) ID of first pagein path STYLE_ID No varchar(15) Style to be used as default for scriptFONT_FACE No varchar(255) Font face for question text (override)FONT_SIZE No number Font size (override) TEXT_COLOR No varchar(30) Textcolor (override) REVEAL_CD No varchar(30) How questions are revealed(override) LAYOUT_CD No varchar(30) How questions are laid out(override) JUMP_OK_FLG No char(1) Can the user jump around in the scriptSAVE_RUN_CD No varchar(30) When to write a record to the answer tableHELP_STYLE_ID No varchar(15) Style for dashboard text (help text)ACTIVE_FLG No char(1) Allow this script to be run STYLE_ID specifies thestyle applied by default for all questions used in the script. Elementsof the chosen style may be overridden at the page and question levels.FONT_FACE, FONT_SIZE, TEXT_COLOR, REVEAL_CD, LAYOUT_CD are elements ofthe style which may be overridden for the path. SAVE_RUN_CD specifieswhen a record should be saved to the answer table for the script run.(Child records are saved for questions with SAVE_ANS_TBL set to Y.)S_CS_PATH_SCPT (New) PATH_ID Yes varchar(15) ID of parent call scriptNAME Yes varchar(75) Name of procedure SCRIPT No long Body of procedure(VB) SEQUENCE No number(10) Order in which procedures are compiledS_CS_PATH_LANG PATH_ID Yes varchar(15) ID of parent call script LANG_IDYes varchar(15) Language for this translation LABEL Yes varchar(255)Translation of call script “label” CS_TEXT No varchar(2000) Help textfor call script S_CS_EDGE PATH_ID No varchar(15) ID of parent callscript PAGE_ID No varchar(15) ID of parent page FROM_QUEST_ID Yesvarchar(15) ID of question from which this edge starts FROM_ANSWR_ID Novarchar(15) ID of answer from which this edge starts NEXT_QUEST_ID Novarchar(15) ID of question to which this edge leads NEXT_PAGE_ID Novarchar(15) ID of page to which edge leads Changes: PATH_ID is optional.PAGE_ID alone is used for a page-specific edge. PAGE_ID is used for thecontaining page of the edge. NEXT_QUEST_ID becomes optional.NEXT_PAGE_ID alone can define branching S_CS_PATH_SRC SRC_ID Yesvarchar(15) ID of parent campaign PATH_ID Yes varchar(15) ID of parentcall script S_CS_PAGE (New) NAME Yes varchar(100) Identifying text ofpage (not translated) START_QUEST_ID Yes varchar(15) ID of firstquestion in page STYLE_ID No varchar(15) Style used as default for thispage FONT_FACE No varchar(255) Font face for question text (override)FONT_SIZE No number Font size (override) TEXT_COLOR No varchar(30) Textcolor (override) REVEAL_CD No varchar(30) How questions are revealed(override) LAYOUT_CD No varchar(30) How questions are laid out(override) S_CS_PAGE_LANG (New) PAGE_ID Yes varchar(15) ID of parentpage LANG_ID Yes varchar(15) Language for this translation LABEL Yesvarchar(255) Page title (displyed in tab) CS_TEXT No varchar(2000) Helptext for page S_CS_RUN (New) PATH_ID Yes varchar(15) ID of script usedSTART_DT Yes datetime Time at which script was started POSTN_ID Novarchar(15) Position of employee running script DURATION No number Timetaken to complete script DURATION_UOM_CD No varchar(30) Duration ofscript unit of measure SRC_ID No varchar(15) Campaign ID (outboundcalls) CON_ID No varchar(15) Callee ID (if known) CAMP_CON_ID Novarchar(15) Campaign/contact instance STATUS_CD No varchar(30)Completion status of script S_CS_RUN_ANSWR (New) RUN_ID Yes varchar(15)ID of parent script run PAGE_ID No varchar(15) ID of page answeredquestion was in QUEST_ID Yes varchar(15) ID of question answeredANSWER_TEXT No varchar(2000) Answer given to question CURCY_CD Novarchar(15) Currency code EXCH_DT No date Exchange data for currencyvalue ANSWR_ID No varchar(15) ID of answer chosen (if any) DURATION Nonumber Time spent on question DURATION_UOM_CD No varchar(30) Time spenton question unit of measure S_CS_STYLE (New) NAME Yes varchar(100)Identifying text of style (not translated) FONT_FACE No varchar(255)Font face for question text FONT_SIZE No number Font size TEXT_COLOR Novarchar(30) Text color REVEAL_CD No varchar(30) How questions arerevealed LAYOUT_CD No varchar(30) How questions are laid out BOLD_FLG Nochar(1) Text bold ITALIC_FLG No char(1) Text italic S_CS_STYLE_LANG(New) STYLE_ID Yes varchar(15) ID of parent style LANG_ID Yesvarchar(15) Language for this translation FONT_FACE No varchar(255) Fontface (override on style) FONT_SIZE No number Font size (override)BOLD_FLG No char(1) Text bold (override) ITALIC_FLG No char(1) Textitalic (override)

APPENDIX C Sample Visual Basic Procedure

This appendix shows the Visual Basic (VB) procedure that implementsdynamic insertion of an answer into a question text. Specifically, itinserts the caller's title and last name into the target question.

Sub Question_Enter Dim MM as String Dim LastName as String Dim Q asSmartScriptQustion Dim Text as String Set Q = Page.GetQuestion(“Contact: Mr/Ms”) MM = Q.GetCurrentValue Set Q = Page.GetQuestion(“Contact: LastName”) LastName = Q.GetCurrentValue Text =OriginalQuestionText Text = SubstituteText (Text, “Contact.M/M”, MM)Text = SubstituteText (Text, “Contact.LastName”, LastName)SetQuestionText (Text) End Sub

While the invention has been described with respect to certain preferredembodiments and exemplifications, it is not intended to limit the scopeof the claims thereby, but solely by the claims appended hereto.

1. A system to facilitate interaction between a customer and a user, comprising: a computer; and an associated database, wherein: the computer is configured to facilitate an established interaction between the user and the customer, the computer is configured to execute a script, the script comprises a structured set of questions to be presented to the user by the computer and is presented to the customer by the user, the structured set of questions includes a first question having an associated list of likely customer responses, at least one of the likely customer responses to the first question being associated with a first link to the associated database, the first link to the associated database is a query resulting in an output of the associated database, the output of the associated database being presented as at least a portion of a second question, the second question has an associated list of likely customer responses, at least one of the likely customer responses to the second question being associated with a second link to the associated database, and the second link to the associated database is a store function resulting in a storage of data in the associated database.
 2. The system as defined in claim 1, further comprising: a set of reusable software components.
 3. The system as defined in claim 2, wherein the script comprises one or more of the reusable software components.
 4. The system as defined in claim 3, wherein the script comprises one or more structured pages, and wherein each structured page includes one or more questions.
 5. The system as defined in claim 4, wherein the one or more questions are also reusable software components.
 6. The system as defined in claim 4, wherein a link between the output of the associated database and the second question is from a first structured page to a second structured page.
 7. The system as defined in claim 2, wherein a link between the first question and a customer response is metadata of the reusable software components.
 8. The system as defined in claim 2, wherein the reusable software components comprise at least one of software objects, data public functions, and private functions, and wherein said data public functions are accessible through derived classes of objects.
 9. The system as defined in claim 1, wherein the script is verified.
 10. The system as defined in claim 1, wherein the computer launches the script as a pop up.
 11. A system to facilitate interaction between a customer and a user, comprising: a computer; and an associated database, wherein: the computer is configured to facilitate an established interaction between the user and the customer, the computer is configured to execute a script, the script comprises a hierarchy of structured script pages, the script comprises a first question having an associated list of likely customer responses, the first question to be presented to the user by the computer and is presented to the customer by the user, the script further comprises at least one of the likely customer responses to the first question, the at least one likely customer response being associated with a first link to the associated database, and the script further comprises the first link, the first link to the associated database being a query resulting in an output of the associated database, the output of the associated database being presented as at least a portion of a second question, the second question has an associated list of likely customer responses, at least one of the likely customer responses to the second question being associated with a second link to the associated database, and the second link to the associated database is a store function resulting in a storage of data in the associated database.
 12. A system to facilitate interaction between a customer and a user, comprising: a computer configured to execute a set of reusable software components, the software reusable components comprising at least one of software objects, data public functions, and private functions, said public data functions being accessible through derived classes of objects; and an associated database, wherein: the computer is configured to facilitate an established interaction between the user and the customer, the computer is configured to execute a script, the script comprising one or more hierarchical script pages, the script pages being reusable software components, the script comprises a structured set of questions to be presented to the user by the computer and is presented to the customer by the user, wherein the questions being reusable software components, the structured set of questions include a first question having an associated list of likely customer responses, the likely customer responses being reusable software components, at least one of the likely customer responses to the first question being associated with a first link to the associated database, the first link being metadata of the software component representing the first question, the first link to the associated database is a query resulting in an output of the associated database, the output of the associated database being presented as at least a portion of a second question, the second question has an associated list of likely customer responses, at least one of the likely customer responses to the second question being associated with a second link to the associated database, and the second link to the associated database is a store function resulting in a storage of data in the associated database. 